package com.googlecode.syper.javasyp.config;

import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

/**
 * This class represents a preference page that
 * is contributed to the Preferences dialog. By
 * subclassing <samp>FieldEditorPreferencePage</samp>, we
 * can use the field support built into JFace that allows
 * us to create a page that is small and knows how to
 * save, restore and apply itself.
 * <p>
 * This page is used to modify preferences only. They
 * are stored in the preference store that belongs to
 * the main plug-in class. That way, preferences can
 * be accessed directly via the preference store.
 */

public class JavaSypMainPreferencePage
	extends FieldEditorPreferencePage
	implements IWorkbenchPreferencePage {

	public JavaSypMainPreferencePage() {
		super(GRID);
		setPreferenceStore(JavaSypPreferences.getPreferences());
		setDescription("Settings for the JavaSyp analysis plugin.");
	}

	/**
	 * Creates the field editors. Field editors are abstractions of
	 * the common GUI blocks needed to manipulate various types
	 * of preferences. Each field editor knows how to save and
	 * restore itself.
	 */
	@Override
	public void createFieldEditors() {
		addField(new FileFieldEditor(
				JavaSypPreferences.getExecutablePreferenceKey(JavaSypPreferences.SMT_SOLVER_Z3),
				"&Z3 executable:", getFieldEditorParent()));
		addField(new IntegerFieldEditor(JavaSypPreferences.getTimeoutPreferenceKey(),
				"&Timeout (secs):", getFieldEditorParent(), 10));
		addField(
				new BooleanFieldEditor(
					JavaSypPreferences.getProveAssumptionsPreferenceKey(),
					"Try proving '&assume' statements before assuming them",
					getFieldEditorParent()));
		addField(
			new BooleanFieldEditor(
				JavaSypPreferences.getShowCounterexamplePreferenceKey(),
				"Show &counterexamples",
				getFieldEditorParent()));

//		addField(new RadioGroupFieldEditor(
//				PreferenceConstants.P_CHOICE,
//			"An example of a multiple-choice preference",
//			1,
//			new String[][] { { "&Choice 1", "choice1" }, {
//				"C&hoice 2", "choice2" }
//		}, getFieldEditorParent()));
//		addField(
//			new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent()));
	}

	public void init(IWorkbench workbench) {
	}

}